home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QD3DPick.p < prev    next >
Encoding:
Text File  |  1997-08-12  |  7.9 KB  |  218 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DPick.p
  3.  
  4.      Contains:    Q3Pick methods                                    
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.1
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1995-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3DPick;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3DPICK__}
  28. {$SETC __QD3DPICK__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DPickIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __QD3D__}
  35. {$I QD3D.p}
  36. {$ENDC}
  37.  
  38. {$IFC UNDEFINED __QD3DSTYLE__}
  39. {$I QD3DStyle.p}
  40. {$ENDC}
  41. {$IFC UNDEFINED __QD3DGEOMETRY__}
  42. {$I QD3DGeometry.p}
  43. {$ENDC}
  44.  
  45.  
  46. {$PUSH}
  47. {$ALIGN POWER}
  48. {$LibExport+}
  49.  
  50. {****************************************************************************
  51.  **                                                                            **
  52.  **                            Mask bits for hit information                     **
  53.  **                                                                            **
  54.  ****************************************************************************}
  55.  
  56. TYPE
  57.     TQ3PickDetailMasks             = LONGINT;
  58. CONST
  59.     kQ3PickDetailNone            = {TQ3PickDetailMasks}0;
  60.     kQ3PickDetailMaskPickID        = {TQ3PickDetailMasks}$01;
  61.     kQ3PickDetailMaskPath        = {TQ3PickDetailMasks}$02;
  62.     kQ3PickDetailMaskObject        = {TQ3PickDetailMasks}$04;
  63.     kQ3PickDetailMaskLocalToWorldMatrix = {TQ3PickDetailMasks}$08;
  64.     kQ3PickDetailMaskXYZ        = {TQ3PickDetailMasks}$10;
  65.     kQ3PickDetailMaskDistance    = {TQ3PickDetailMasks}$20;
  66.     kQ3PickDetailMaskNormal        = {TQ3PickDetailMasks}$40;
  67.     kQ3PickDetailMaskShapePart    = {TQ3PickDetailMasks}$80;
  68.     kQ3PickDetailMaskPickPart    = {TQ3PickDetailMasks}$0100;
  69.     kQ3PickDetailMaskUV            = {TQ3PickDetailMasks}$0200;
  70.  
  71.  
  72. TYPE
  73.     TQ3PickDetail                        = LONGINT;
  74. {*****************************************************************************
  75.  **                                                                             **
  76.  **                                Hitlist sorting                                 **
  77.  **                                                                             **
  78.  ****************************************************************************}
  79.     TQ3PickSort                 = LONGINT;
  80. CONST
  81.     kQ3PickSortNone                = {TQ3PickSort}0;
  82.     kQ3PickSortNearToFar        = {TQ3PickSort}1;
  83.     kQ3PickSortFarToNear        = {TQ3PickSort}2;
  84.  
  85.  
  86. {*****************************************************************************
  87.  **                                                                             **
  88.  **                    Data structures to set up the pick object                 **
  89.  **                                                                             **
  90.  ****************************************************************************}
  91.  
  92. TYPE
  93.     TQ3PickDataPtr = ^TQ3PickData;
  94.     TQ3PickData = RECORD
  95.         sort:                    TQ3PickSort;
  96.         mask:                    TQ3PickDetail;
  97.         numHitsToReturn:        LONGINT;
  98.     END;
  99.  
  100.     TQ3WindowPointPickDataPtr = ^TQ3WindowPointPickData;
  101.     TQ3WindowPointPickData = RECORD
  102.         data:                    TQ3PickData;
  103.         point:                    TQ3Point2D;
  104.         vertexTolerance:        Single;
  105.         edgeTolerance:            Single;
  106.     END;
  107.  
  108.     TQ3WindowRectPickDataPtr = ^TQ3WindowRectPickData;
  109.     TQ3WindowRectPickData = RECORD
  110.         data:                    TQ3PickData;
  111.         rect:                    TQ3Area;
  112.     END;
  113.  
  114. {*****************************************************************************
  115.  **                                                                             **
  116.  **                                    Hit data                                 **
  117.  **                                                                             **
  118.  ****************************************************************************}
  119.     TQ3HitPathPtr = ^TQ3HitPath;
  120.     TQ3HitPath = RECORD
  121.         rootGroup:                TQ3GroupObject;
  122.         depth:                    LONGINT;
  123.         positions:                TQ3GroupPositionPtr;
  124.     END;
  125.  
  126. {
  127.  *    The following data structure has been obsoleted by
  128.  *    the Q3Pick_GetPickDetailData function in conjunction
  129.  *    with the pickDetailValue enum
  130.  }
  131.     TQ3HitDataPtr = ^TQ3HitData;
  132.     TQ3HitData = RECORD
  133.         part:                    TQ3PickParts;
  134.         validMask:                TQ3PickDetail;
  135.         pickID:                    LONGINT;
  136.         path:                    TQ3HitPath;
  137.         object:                    TQ3Object;
  138.         localToWorldMatrix:        TQ3Matrix4x4;
  139.         xyzPoint:                TQ3Point3D;
  140.         distance:                Single;
  141.         normal:                    TQ3Vector3D;
  142.         shapePart:                TQ3ShapePartObject;
  143.     END;
  144.  
  145. {*****************************************************************************
  146.  **                                                                             **
  147.  **                                Pick class methods                             **
  148.  **                                                                             **
  149.  ****************************************************************************}
  150. FUNCTION Q3Pick_GetType(pick: TQ3PickObject): LONGINT; C;
  151. FUNCTION Q3Pick_GetData(pick: TQ3PickObject; VAR data: TQ3PickData): TQ3Status; C;
  152. FUNCTION Q3Pick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3PickData): TQ3Status; C;
  153. FUNCTION Q3Pick_GetVertexTolerance(pick: TQ3PickObject; VAR vertexTolerance: Single): TQ3Status; C;
  154. FUNCTION Q3Pick_GetEdgeTolerance(pick: TQ3PickObject; VAR edgeTolerance: Single): TQ3Status; C;
  155. FUNCTION Q3Pick_SetVertexTolerance(pick: TQ3PickObject; vertexTolerance: Single): TQ3Status; C;
  156. FUNCTION Q3Pick_SetEdgeTolerance(pick: TQ3PickObject; edgeTolerance: Single): TQ3Status; C;
  157. FUNCTION Q3Pick_GetNumHits(pick: TQ3PickObject; VAR numHits: LONGINT): TQ3Status; C;
  158. FUNCTION Q3Pick_EmptyHitList(pick: TQ3PickObject): TQ3Status; C;
  159. FUNCTION Q3Pick_GetPickDetailValidMask(pick: TQ3PickObject; index: LONGINT; VAR pickDetailValidMask: TQ3PickDetail): TQ3Status; C;
  160. FUNCTION Q3Pick_GetPickDetailData(pick: TQ3PickObject; index: LONGINT; pickDetailValue: TQ3PickDetail; detailData: UNIV Ptr): TQ3Status; C;
  161. FUNCTION Q3HitPath_EmptyData(VAR hitPath: TQ3HitPath): TQ3Status; C;
  162.  
  163. {
  164.  *    The following functions have been superseeded
  165.  *    by the Q3Pick_GetPickDetailData function
  166.  }
  167. FUNCTION Q3Pick_GetHitData(pick: TQ3PickObject; index: LONGINT; VAR hitData: TQ3HitData): TQ3Status; C;
  168. FUNCTION Q3Hit_EmptyData(VAR hitData: TQ3HitData): TQ3Status; C;
  169.  
  170.  
  171. {*****************************************************************************
  172.  **                                                                             **
  173.  **                            Window point pick methods                         **
  174.  **                                                                             **
  175.  ****************************************************************************}
  176. FUNCTION Q3WindowPointPick_New({CONST}VAR data: TQ3WindowPointPickData): TQ3PickObject; C;
  177. FUNCTION Q3WindowPointPick_GetPoint(pick: TQ3PickObject; VAR point: TQ3Point2D): TQ3Status; C;
  178. FUNCTION Q3WindowPointPick_SetPoint(pick: TQ3PickObject; {CONST}VAR point: TQ3Point2D): TQ3Status; C;
  179. FUNCTION Q3WindowPointPick_GetData(pick: TQ3PickObject; VAR data: TQ3WindowPointPickData): TQ3Status; C;
  180. FUNCTION Q3WindowPointPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WindowPointPickData): TQ3Status; C;
  181.  
  182. {*****************************************************************************
  183.  **                                                                             **
  184.  **                            Window rect pick methods                         **
  185.  **                                                                             **
  186.  ****************************************************************************}
  187. FUNCTION Q3WindowRectPick_New({CONST}VAR data: TQ3WindowRectPickData): TQ3PickObject; C;
  188. FUNCTION Q3WindowRectPick_GetRect(pick: TQ3PickObject; VAR rect: TQ3Area): TQ3Status; C;
  189. FUNCTION Q3WindowRectPick_SetRect(pick: TQ3PickObject; {CONST}VAR rect: TQ3Area): TQ3Status; C;
  190. FUNCTION Q3WindowRectPick_GetData(pick: TQ3PickObject; VAR data: TQ3WindowRectPickData): TQ3Status; C;
  191. FUNCTION Q3WindowRectPick_SetData(pick: TQ3PickObject; {CONST}VAR data: TQ3WindowRectPickData): TQ3Status; C;
  192.  
  193.  
  194. {*****************************************************************************
  195.  **                                                                             **
  196.  **                                Shape Part methods                             **
  197.  **                                                                             **
  198.  ****************************************************************************}
  199. FUNCTION Q3ShapePart_GetType(shapePartObject: TQ3ShapePartObject): LONGINT; C;
  200. FUNCTION Q3MeshPart_GetType(meshPartObject: TQ3MeshPartObject): LONGINT; C;
  201. FUNCTION Q3ShapePart_GetShape(shapePartObject: TQ3ShapePartObject; VAR shapeObject: TQ3ShapeObject): TQ3Status; C;
  202. FUNCTION Q3MeshPart_GetComponent(meshPartObject: TQ3MeshPartObject; VAR component: TQ3MeshComponent): TQ3Status; C;
  203. FUNCTION Q3MeshFacePart_GetFace(meshFacePartObject: TQ3MeshFacePartObject; VAR face: TQ3MeshFace): TQ3Status; C;
  204. FUNCTION Q3MeshEdgePart_GetEdge(meshEdgePartObject: TQ3MeshEdgePartObject; VAR edge: TQ3MeshEdge): TQ3Status; C;
  205. FUNCTION Q3MeshVertexPart_GetVertex(meshVertexPartObject: TQ3MeshVertexPartObject; VAR vertex: TQ3MeshVertex): TQ3Status; C;
  206.  
  207.  
  208. {$ALIGN RESET}
  209. {$POP}
  210.  
  211. {$SETC UsingIncludes := QD3DPickIncludes}
  212.  
  213. {$ENDC} {__QD3DPICK__}
  214.  
  215. {$IFC NOT UsingIncludes}
  216.  END.
  217. {$ENDC}
  218.